home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib02.dsk / BLAST AWAY.bas < prev    next >
BASIC Source File  |  2023-02-26  |  8KB  |  180 lines

  1. 10  REM  ******************************
  2. 11  REM  **       BLAST 'EM          **
  3. 12  REM  **   BY ANDREW BERMAN       **
  4. 13  REM  **  COPYRIGHT (C) 1980      **
  5. 14  REM  **  BY MICRO-SPARC, INC.    **
  6. 15  REM  **  LINCOLN, MA.  01773     **
  7. 16  REM  ******************************
  8. 30  DIM IA(12),JA(12): REM  ARRAYS.
  9. 35  IF  PEEK(2046) < >123  OR  PEEK(2047) < >213  THEN  POKE 2046,123: POKE 2047,213: POKE 2044,0: POKE 2045,0: REM  SETFLAG FOR HIGH SCORE.
  10. 40  GOTO 10000: REM  CONTROLLER
  11. 1999  REM  PRINTOUT FINAL SCORE & CHECK TO SEE IF THERE IS A NEW HIGH SCORE
  12. 2000  VTAB 21: HTAB 8:NM = SC: GOSUB 61000
  13. 2005  PRINT 
  14. 2010  IF SC < = HS  THEN  RETURN 
  15. 2020 HS = SC: HTAB 24:NM = HS: FLASH : GOSUB 61000: NORMAL : HTAB 1
  16. 2030  POKE 2045,HS/256: POKE 2044,HS - PEEK(2045) *256: REM  POKE-IN HIGH SCORE.
  17. 2999  REM  PRINTOUT RUNNING SCORE
  18. 3000  VTAB 21: HTAB 8:NM = SC: GOSUB 61000: RETURN 
  19. 3999  END 
  20. 4000  REM  ERASE HIM. SORRY
  21. 4010  IF W7 <3  THEN 4100: REM  SPECIAL
  22. 4020 I = IA(W7):J = JA(W7)
  23. 4030  COLOR= 8: GOSUB 7100
  24. 4040  GOTO 4200
  25. 4100  IF W7 = 2  THEN 4150: REM  2 SEPERATE
  26. 4110  COLOR= 0
  27. 4120  HLIN 19,21 AT 3: PLOT 20,2
  28. 4130  GOTO 4200
  29. 4150  COLOR= 0
  30. 4160  HLIN 3,5 AT 23: PLOT 4,24: PLOT 3,25: POKE 5,25: REM  3X3 HIDDEN IN TREES
  31. 4170  GOTO 4200
  32. 4200  IF CO = 1  THEN CO =  SCRN( XO,YO): REM  PREVENT FROM REVERTING TO VALUE.
  33. 4210  IF NP = 0  THEN  CALL PIP
  34. 4220  REM  ^NEEDS NO EXPLANATION
  35. 4230  RETURN 
  36. 4999  END 
  37. 5000  REM  DRAW TARGET
  38. 5010  IF W7 <3  THEN 5100: REM  SPECIAL
  39. 5020 I = IA(W7):J = JA(W7)
  40. 5030  COLOR= 1: GOSUB 7100
  41. 5040  GOTO 5200
  42. 5100  IF W7 = 2  THEN 5150: REM  2 SEPERATE
  43. 5110  COLOR= 1
  44. 5120  HLIN 19,21 AT 3: PLOT 20,2
  45. 5130  GOTO 5200
  46. 5150  COLOR= 1
  47. 5160  HLIN 3,5 AT 23: PLOT 2,24: PLOT 3,25: PLOT 5,25: REM  3X3 HIDDEN IN TREES.
  48. 5170  GOTO 5200
  49. 5200  IF  SCRN( XO,YO) = 1  THEN CO = 1
  50. 5210  CALL PIP: RETURN 
  51. 5220  REM  THE ABOVE STATEMENT PREVENTS IT FROM REVERTING BACK TO BROWN.
  52. 5999  REM  AIM GUN & SHOOT
  53. 6000  IF AMMO = 0  THEN  POP :X8 = WT: NEXT X8:VI = 25: NEXT VI: GOSUB 4000: GOTO 10330
  54. 6003 SH = 0: REM  --CLEAR SHOT'IM TOKEN
  55. 6005  REM  FIRST POSITION?
  56. 6010  IF T6 = 1  THEN 6100: REM  BEEN HERE BEFORE
  57. 6020 T6 = 1
  58. 6030 XP =  INT( PDL(0) *39/255):YP =  INT( PDL(1) *39/255)
  59. 6040 XO = XP:YO = YP:CO =  SCRN( XP,YP): COLOR= 15: PLOT XP,YP: GOTO 6200: REM 
  60. 6100 XP =  INT( PDL(0) *39/255):YP =  INT( PDL(1) *39/255)
  61. 6110  IF XO = XP  AND YO = YP  THEN 6130: REM  NO CHANGE
  62. 6120  COLOR= CO: PLOT XO,YO:XO = XP:YO = YP:CO =  SCRN( XP,YP)
  63. 6130  COLOR= 15: PLOT XP,YP
  64. 6200  REM  SHOT?
  65. 6210  IF  PEEK( -16287) >128  OR  PEEK( -16286) >128  THEN 6300: REM  YES!
  66. 6220  RETURN 
  67. 6300  REM  YES-SHOT!
  68. 6305  VTAB 24: CALL  -868
  69. 6310  CALL GUN:AMMO = AMMO -1
  70. 6315  IF CO = 4  OR CO = 13  THEN  VTAB 24: INVERSE : CALL  -868: HTAB 1: PRINT "WHY ARE YOU SHOOTING THE DOOR?";: HTAB 1: NORMAL : VTAB 21
  71. 6320  IF CO = 1  THEN SH = 1
  72. 6330  VTAB 21: HTAB 26: IF AMMO <10  THEN  PRINT " ";: INVERSE : IF AMMO = 0  THEN  FLASH 
  73. 6340  PRINT AMMO: NORMAL 
  74. 6350  RETURN 
  75. 6999  END 
  76. 7000  REM  -DRAW AREA
  77. 7010  GR : COLOR= 10
  78. 7020  FOR X = 10 TO 30: VLIN 5,35 AT X: NEXT 
  79. 7030  COLOR= 8
  80. 7040  FOR W0 = 3 TO 12:I = IA(W0):J = JA(W0): GOSUB 7100: NEXT W0
  81. 7050  GOTO 7110: REM  SKIP SUBROUTINE.
  82. 7099  GOTO 7110
  83. 7100  FOR Z5 = I TO I +2: VLIN J,J +2 AT Z5: NEXT Z5: RETURN 
  84. 7110  COLOR= 13: PLOT 20,27: HLIN 19,21 AT 28: FOR Z1 = 29 TO 35: HLIN 18,22 AT Z1: NEXT Z1
  85. 7120  COLOR= 4: FOR Z = 30 TO 33: HLIN 19,21 AT Z: NEXT 
  86. 7130  COLOR= 2: HLIN 11,29 AT 4: HLIN 10,30 AT 5: HLIN 9,31 AT 6
  87. 7140  COLOR= 12: HLIN 18,22 AT 36
  88. 7150  COLOR= 7: FOR Z = 36 TO 39: HLIN 0,39 AT Z: NEXT Z
  89. 7160  COLOR= 12: HLIN 18,22 AT 36
  90. 7170  COLOR= 7: FOR Z = 30 TO 35: HLIN 0,9 AT Z: HLIN 31,39 AT Z: NEXT Z
  91. 7180  COLOR= 8: VLIN 25,30 AT 4: HLIN 1,3 AT 24: HLIN 5,8 AT 24: PLOT 2,25: PLOT 7,25: PLOT 1,26: PLOT 8,26: PLOT 1,27: PLOT 1,23: PLOT 6,23: PLOT 0,22: PLOT 7,22
  92. 7190  RETURN 
  93. 7999  END 
  94. 8000  REM  -INSTRUCTIONS
  95. 8010  TEXT : HOME 
  96. 8020  PRINT "INSTRUCTIONS:"
  97. 8030  POKE 34,3
  98. 8040  HOME : PRINT "THE OBJECT IS TO SHOOT THE VARIOUS": PRINT : PRINT "TARGETS (IN RED) THAT APPEAR FROM TIME": PRINT : PRINT "TO TIME. THE WHITE 'BLIP' SHOWS WHERE": PRINT : PRINT "YOUR GUN IS AIMED. YOU CONTROL THE": PRINT 
  99. 8050  PRINT "GUNSIGHT WITH THE PADDLES OR JOYSTICK.": PRINT 
  100. 8060  PRINT "SHOOT BY PRESSING EITHER PADDLE BUTTON.": PRINT : PRINT 
  101. 8065  PRINT 
  102. 8075  PRINT "HIT RETURN WHEN READY....";: POKE  -16368,0
  103. 8080  GET K$: IF K$ < > CHR$(13)  THEN 8080
  104. 8090  RETURN 
  105. 8999  END 
  106. 9000  REM -TITLE
  107. 9010  TEXT : HOME : VTAB 6
  108. 9020 A$ = "**  BLAST AWAY  **": INVERSE : GOSUB 9100: NORMAL 
  109. 9030 A$ = "BY ANDREW BERMAN": GOSUB 9100
  110. 9040 A$ = "----------------------------": GOSUB 9100
  111. 9045 A$ = "  COPYRIGHT (C) BY MICRO-SPARC -1980 ": GOSUB 9100
  112. 9050  FOR X = 1 TO 3500: NEXT : RETURN 
  113. 9100  HTAB 20 - LEN(A$)/2 +1: PRINT A$: PRINT : PRINT : PRINT : RETURN 
  114. 9999  END 
  115. 10000  REM  -CONTROLLER.
  116. 10005 GUN = 770:PIP = 800:AAARGH = 832
  117. 10006  GOSUB 62000: REM  READ VARIABLES
  118. 10010  GOSUB 9000: REM  TITLE.
  119. 10020  VTAB 20: HTAB 1: PRINT "DO YOU WISH INSTRUCTIONS?"
  120. 10030  GOSUB 60000: REM  Y OR N
  121. 10040  IF AN$ = "Y"  THEN  GOSUB 8000
  122. 10060  GOSUB 7000: REM  DRAW AREA.
  123. 10070 SC = 0:AM = 25:HS =  PEEK(2044) + PEEK(2045) *256
  124. 10080  HOME : PRINT "SCORE: 0000";: HTAB 20: PRINT "AMMO: 25": PRINT "  HI SCORE OF THE DAY: ";:NM = HS: GOSUB 61000
  125. 10090  PRINT : INVERSE : HTAB 10: PRINT "[ ANY KEY TO BEGIN ]";: HTAB 1: NORMAL 
  126. 10100  POKE  -16368,0: WAIT  -16384,128: POKE  -16368,0: CALL  -868: CALL  -1059
  127. 10110  FOR VI = 1 TO 25: REM   25 OBJECTS!!
  128. 10120 XV =  -1:YV =  -1:W7 =  -1: REM  NO 'VICTIMS' ON SCREEN
  129. 10130 WT =  INT( RND(1) *30) +30: FOR X8 = 1 TO WT
  130. 10140  GOSUB 6000: REM  ADJUST GUN POSITION AND SHOOT.
  131. 10150  NEXT X8: REM  THE PREVIOUS THREE LINES INCLUSIVE ARE SIMPLY A WAIT PERIOD BEFORE 'VICTIM' APPEARS.
  132. 10160 W7 =  INT( RND(1) *12) +1
  133. 10165  ON W7 GOTO 10166,10167: GOTO 10168
  134. 10166 VA = 250: GOTO 10170
  135. 10167 VA = 200: GOTO 10170
  136. 10168 VA = 50: GOTO 10170
  137. 10170  GOSUB 5000: REM  FIND POSITION ACCORDING TO PICTURE PRINT WITH A 'PIP'
  138. 10180 WT = 10: IF W7 <3  THEN WT = 9: IF W7 <1  THEN WT = 8: REM  LESS TIME FOR THE MORE VALUABLE ONES...
  139. 10190  FOR X8 = 1 TO WT
  140. 10200  GOSUB 6000: REM  SHOT HIM?
  141. 10210  IF SH = 1  THEN X8 = WT: NEXT X8: GOTO 10250: REM  -YES, SHOT HIM.
  142. 10220  NEXT X8
  143. 10230  GOSUB 4000: REM  ERASE HIM. SORRY.
  144. 10240  GOTO 10300
  145. 10250  REM  SHOT HIM!
  146. 10260  CALL AAARGH
  147. 10270 SC = SC +VA: REM  INCREASE SCORE.
  148. 10280 NP = 1: GOSUB 4000:NP = 0: REM  NP=NO PIP
  149. 10290  GOSUB 3000: REM  -UPDATE SCORE.
  150. 10300  NEXT VI
  151. 10305  COLOR= CO: PLOT XO,YO: REM  ERASE THE DOT.
  152. 10310  VTAB 24: INVERSE : HTAB 1: PRINT "THAT'S IT.  NO MORE THIS ROUND.";: NORMAL : HTAB 1
  153. 10315  GOSUB 2000: REM -FINAL UPDATE.
  154. 10320  FOR X8 = 1 TO 3000: NEXT X8
  155. 10330  REM - IF HE RAN OUT OF AMMO (LINES 6000-6999), THE PROGRAM WILL JUMP TO HERE.
  156. 10335  GOSUB 2000: REM  FINAL UPDATE AND SEE IF THERE IS A NEW HIGH SCORE.
  157. 10340  COLOR= CO: PLOT XO,YO: VTAB 24: CALL  -868
  158. 10350  INVERSE : PRINT "ANOTHER ROUND?";: NORMAL : HTAB 1
  159. 10360  GOSUB 60000: IF AN$ = "N"  THEN  VTAB 24: HTAB 1: CALL  -868: VTAB 23: END 
  160. 10370  GOTO 10070: REM  AGAIN
  161. 59999  STOP : REM 
  162. 60000  POKE  -16368,0
  163. 60010  WAIT  -16384,128:AN$ =  CHR$( PEEK( -16384) -128): POKE  -16368,0: IF AN$ = "Y"  OR AN$ = "N"  THEN  RETURN 
  164. 60020  GOTO 60000
  165. 61000  IF NM <1000  THEN  PRINT "0";: IF NM <100  THEN  PRINT "0";: IF NM <10  THEN  PRINT "0";
  166. 61010  PRINT NM;: RETURN 
  167. 62000  RESTORE 
  168. 62010  FOR X = 3 TO 12: READ IA(X),JA(X): NEXT X
  169. 62020  FOR X = 770 TO 784: READ Y: POKE X,Y: NEXT X: REM  GUNSHOT
  170. 62030  FOR X = 800 TO 813: READ Y: POKE X,Y: NEXT X: REM  PIP
  171. 62040  FOR X = 832 TO 848: READ Y: POKE X,Y: NEXT X: REM  AAARGH
  172. 62050  RETURN 
  173. 63000  REM  -DATA
  174. 63010  DATA  11,10,18,11,23,10,17,16,22,16,12,19,20,22,25,25,11,26,12,31
  175. 63019  REM  770-784  GUNSHOT
  176. 63020  DATA  162,1,138,32,168,252,141,48,192,232,224,32,208,244,96
  177. 63029  REM  800-813 PIP
  178. 63030  DATA  162,48,141,48,192,169,16,32,168,252,202,208,245,96
  179. 63039  REM  832-848 AAARGH
  180. 63040  DATA  162,1,141,48,192,138,105,56,32,168,252,232,224,21,208,242,96